package org.link.util;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 
 * project_name:forumweb
 * package_name:org.link.util
 * file_name:SendEmail.java
 * @author Link
 * create_date:2015年10月24日下午9:41:37
 * modified_date:
 * description: 发邮件工具类
 *
 */
public class SendEmail extends Thread {
	//用于给用户发送邮件的邮箱  测试网易的的邮箱
	private String from = "mxb49565629@126.com";
	private String mailname ="mxb49565629@126.com";
	private String mailpass ="mxb49565629";	
	private String mailhost = "smtp.126.com";	//邮箱的主机+协议
	private String regMail;						//要发送邮件的邮箱
	private String content;						//发送的内容
	
	
	public SendEmail() {
		super();
	}

	public SendEmail(String regMail,String content) {
		this.regMail = regMail;
		this.content = content;
		
	}

	@Override
	public void run() {
		try {
			Properties pro = new Properties();
			pro.setProperty("mail.host",mailhost);
			pro.setProperty("mail.transport.protocol", "smtp");
			pro.setProperty("mail.smtp.auth", "true");
			//使用JavaMail发送邮件的5个步骤
			//1.创建session，并初始化邮箱的地址，协议等
			Session session = Session.getInstance(pro);
			session.setDebug(true);//开启session的debug模式这样可以查看程序的发送mail的运行状态
			//2.通过session获得transport对象，主要用于发送邮件
			Transport ts = session.getTransport();
			//3、使用邮箱的用户名和密码连接上邮件服务器，才能发送邮件
			ts.connect(mailhost,mailname,mailpass);
			//4、创建邮件
			Message message = createEmail(session, regMail);
			//5.发送邮件给所有的收件人
			ts.sendMessage(message,message.getAllRecipients());
			ts.close();
		} catch (NoSuchProviderException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 
	 * description: 创建邮箱方法体
	 * creatTime:2015年10月24日下午9:41:56
	 * @author Link
	 * return type: Message
	 *
	 */
	public Message createEmail(Session session,String regMail){
		//创建邮件对象
		MimeMessage message = new MimeMessage(session);
		try {
			//指明邮件的发件人
			message.setFrom(new InternetAddress(from));
			//指明邮件的收件人
			message.setRecipient(Message.RecipientType.TO, new InternetAddress(regMail));
			//设置邮件的主题
			message.setSubject("用户注册激活邮件");
			
			//设置邮件的内容
			message.setContent(content,"text/html;charset=UTF-8");
			//保存
			message.saveChanges();
		} catch (MessagingException e) {
			e.printStackTrace();
		}
		return message;
	}

}
